/**
   @file sys_usw_pon.h

   @date 2020-11-3

   @version v1.0

   The file defines Macro, stored data structure for Normal PON module
 */

#ifndef _SYS_USW_PON_H_
#define _SYS_USW_PON_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "sal.h"
#include "ctc_error.h"
#include "ctc_debug.h"
#include "ctc_hash.h"
#include "ctc_const.h"
#include "ctc_pon.h"

extern int32
sys_usw_pon_create_gem_port(uint8 lchip, ctc_pon_gem_port_t* p_gem_port);

extern int32
sys_usw_pon_destroy_gem_port(uint8 lchip, ctc_pon_gem_port_t* p_gem_port);

extern int32
sys_usw_pon_update_gem_port(uint8 lchip, ctc_pon_gem_port_t* p_gem_port);

extern int32
sys_usw_pon_get_gem_port(uint8 lchip, ctc_pon_gem_port_t* p_gem_port);

extern int32
sys_usw_pon_create_vlan_port(uint8 lchip, ctc_pon_vlan_port_t* p_vlan_port);

extern int32
sys_usw_pon_destroy_vlan_port(uint8 lchip, ctc_pon_vlan_port_t* p_vlan_port);

extern int32
sys_usw_pon_update_vlan_port(uint8 lchip, ctc_pon_vlan_port_t* p_vlan_port);

extern int32
sys_usw_pon_get_vlan_port(uint8 lchip, ctc_pon_vlan_port_t* p_vlan_port);

extern int32
sys_usw_pon_set_port_propery(uint8 lchip, uint32 gport, ctc_pon_port_cfg_t* cfg);

extern int32
sys_usw_pon_get_port_propery(uint8 lchip, uint32 gport, ctc_pon_port_cfg_t* cfg);

extern int32
sys_usw_pon_init(uint8 lchip, void* p_init_cfg);

extern int32
sys_usw_pon_deinit(uint8 lchip, void* p_init_cfg);

extern int32
sys_usw_vlan_set_fid_mapping_vdev_vlan(uint8 lchip, uint16 fid, uint16 vdev_vlan, uint8 is_set);

extern int32
sys_usw_global_set_xgpon_en(uint8 lchip, uint8 enable, uint8 mode);

extern int32
sys_usw_nh_set_xgpon_en(uint8 lchip, uint8 enable, uint32 flag);
 
extern int32
sys_usw_bpe_port_vdev_en(uint8 lchip, uint32 gport, uint32 enable);

#ifdef __cplusplus
}
#endif
#endif /*end of _SYS_USW_PON_H_*/
